热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

所说|本文_支持百万并发高性能网关设计实现系列:什么是网关?

篇首语:本文由编程笔记#小编为大家整理,主要介绍了支持百万并发高性能网关设计实现系列:什么是网关?相关的知识,希望对你有一定的参考价值。 网关是个什么东东?为什么需要网关?

篇首语:本文由编程笔记#小编为大家整理,主要介绍了支持百万并发高性能网关设计实现系列:什么是网关?相关的知识,希望对你有一定的参考价值。



网关是个什么东东?为什么需要网关?

随着微服务架构不断兴起,以前的一个大的单体应用根据不同的业务域拆分为不同的微服务系统进行维护和部署。因此各个微服务对外提供的服务接口API会呈现出爆发式的增长,如何对于各个应用服务的接口进行统一管理成为了不可回避的问题。

外部的请求想要访问内部的应用服务必须经过一系列的校验、鉴权等操作,如果吧这些操作都放到每个服务中去做明显不合理。不仅造成重复代码同时各个服务也增加了和自身业务逻辑无关的模块变得更重了,一旦增加新的校验规则,每个服务都需要进行修改,明显这不是好的设计。


因此,我们需要将这些服务的通用操作进行抽象,所有的关于请求的前置处理,都抽象到一个专门完成此业务的中间中去实现。而这个中间件就是我们所说的网关。


API网关作为外部请求与内部微服务的沟通桥梁,承担了流量入口的重要职责,实现了对外部请求的的协议转换、请求鉴权、参数校验、流量控制、数据统计以及API上线与下线等通用能力的沉淀。


为什么进行网关自研

原因分析

实际上对于API网关来说,已经有不少的开源的解决方案,比如Zuul、Kong等开源网关实现。但是这些开源网关解决方案并不完备,比如不能没有强大的监控能力,不能很好的支持Open API平台,同时在扩展方面由于开源的一些限制,扩展方面不能与业务更好的匹配。

而如果自主进行网关的迭代开发,这样维护性更强,发现问题可以及时修改,不必要等待开源框架进行修复,同时可以通过插件化的设计更加契合自身业务。另外我们可以借鉴各个开源解决方案的优秀设计,摒弃一些不好的设计实现,为实现更加适合业务的网关奠定设计架构基础。

基于以上的几点的分析,我们需要自研一套高扩展、高性能、高可用的API网关解决方案满足自身业务。


价值分析

1、提升API网关自主开发以及扩展能力,在使用过程中有什么问题以及建议可以直接提给网关维护团队,问题解决效率更高,业务开发同学可以专注于业务实现;

2、降低前后端沟通成本,通过后端服务API的统一管控,可以将需要联调的测试接口发布到网关中,包括接口url、请求参数、响应信息等,万前端同学可以方便查看,提升前后端接口联调测试的效率;


总结

本文作为自研高性能网关系列的第一篇,主要给同学们阐述了网关在分布式系统中的重要作用以及核心功能,同时分析了进行网关自研的目的以及价值,后续的文章将从需求分析、架构设计以及落地实现等方面继续为大家拆解自研网关。


推荐阅读
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • [翻译]微服务设计模式5. 服务发现服务端服务发现
    服务之间需要互相调用,在单体架构中,服务之间的互相调用直接通过编程语言层面的方法调用就搞定了。在传统的分布式应用的部署中,服务地 ... [详细]
  • 服务网关与流量网关
    一、为什么需要服务网关1、什么是服务网关传统的单体架构中只需要开放一个服务给客户端调用,但是微服务架构中是将一个系统拆分成多个微服务,如果没有网关& ... [详细]
  • BPM是什么软件?1、BPM是BusinessProcessManagement的简称,译为业务流程管理,它是一种以规范化的构造端到端的卓越业务流程为中心以持续的提高组织业务绩效为 ... [详细]
  • TiDB | TiDB在5A级物流企业核心系统的应用与实践
    TiDB在5A级物流企业核心系统的应用与实践前言一、业务背景科捷物流概况神州金库简介二、现状与挑战神州金库现有技术体系业务挑战应对方案三、TiDB解决方案测试迁移收益问题四、说在最 ... [详细]
  • 提供:ZStack云计算原创2016-12-26张鑫讲师介绍张鑫ZStack总架构师、联合创始人《系统虚拟化》主要作者,曾任职Intel开源软件技术中心 ... [详细]
  • Java工程师书单(初级,中级,高级)
    简介怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作一两年之后开始迷茫的程序 ... [详细]
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
  • 说出来你可能不信,我用三天做了一个完整的项目
    Java在人工智能中能起到什么作用?作为编程语言中的扛把子,Java20多年稳定不倒,就在于它的稳定性,维护成本极低。这使得 ... [详细]
  • 都说Python处理速度慢,为何月活7亿的 Instagram依然在使用Python?
    点击“Python编程与实战”,选择“置顶公众号”第一时间获取Python技术干货!来自|简书作者|我爱学python链接|https:www.jian ... [详细]
  • SOA架构理解理解SOA架构,了解ESB概念,明白SOA与微服务的区别和联系,了解SOA与热门技术的结合与应用。1、面向服务的架构SOASOA(ServiceOrien ... [详细]
  • 朱晔的互联网架构实践心得S1E7:三十种架构设计模式(上)【下载本文PDF进行阅读】设计模式是前人通过大量的实践总结出来的一些经验总结和最佳实践。在经过多年的软件开发实践之后,回过头 ... [详细]
  • 第四单元和课程总结:简单的架构设计意识
    一、第四单元架构设计总结第一次作业由于需要按名查找类图模型,于是建立"Class"类进行管理由于方法具有参数导致类中存在二级结构 ... [详细]
  • 博客_2018年博客总结
    本文由编程笔记#小编为大家整理,主要介绍了2018年博客总结相关的知识,希望对你有一定的参考价值。前言     ... [详细]
  • Istio是一个用来连接、管理和保护微服务的开放平台。Istio提供一种简单的方式来为已部署的服务建 ... [详细]
author-avatar
电信学院团总支沈天宇
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有